home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-1.iso / Files / Internet / Misc / Uupc 3.1 sources.sit / uupc 3.1 sources Folder / Mac specific / host.c next >
Encoding:
C/C++ Source or Header  |  1994-04-26  |  3.5 KB  |  182 lines  |  [TEXT/KAHL]

  1. /*        mac.c
  2.  
  3.         macintosh host 
  4.  
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdarg.h>
  9. #include "host.h"
  10. #include <string.h>
  11. #include <ctype.h>
  12. #include <setjmp.h>
  13. #include <errno.h>
  14.  
  15. # ifdef THINK_C
  16. # include <console.h>
  17. #endif THINK_C
  18.  
  19. #define    MAIN    mailmain
  20.  
  21. char *curdir;
  22. char * getcwd();
  23.  
  24. int CHDIR();
  25. extern MAIN (int, char **);
  26. int    debuglevel;        /* debugging level */
  27.  
  28. SysEnvRec SysEnv;
  29. int settingsFileVRefNum;
  30. long int settingsFileDirID;
  31.  
  32. #ifdef Upgrade
  33. long int systimeout = 0;
  34. #endif Upgrade
  35.  
  36. #ifdef STANDALONE
  37. char *flds[10];
  38. char line[128];
  39.  
  40. #define DMAILBOX    "mailbox"
  41. #define    DNAME        ""
  42. #define DHOME        "/usr/home/guest"
  43. #define    DDOMAIN        "mac.uucp"
  44. #define    DMAILDIR    "/usr/spool/mail"
  45. #define    DCONFDIR    "/usr/lib/uucp"
  46. #define    DSPOOLDIR    "/usr/spool/uucp"
  47. #define DPUBDIR        "/usr/spool/uucppublic"
  48. #define    DMAILSERVICE    "crash"
  49. #define    DNODENAME    "shappy"
  50. #define    DDEVICE        "modem"
  51. #define    DSPEED        "2400"
  52. #define    DTEMPDIR    "/usr/tmp"
  53.  
  54. #include "host.proto.h"
  55.  
  56. FILE *fe;
  57.  
  58. SysEnvRec SysEnv;
  59. int settingsFileVRefNum;
  60. long int settingsFileDirID;
  61.  
  62. void sgenv(char **thename, char *envname, char *dflt)
  63. {
  64.     char line[BUFSIZ];
  65.  
  66.     fprintf( stderr, "genv: %s %s\n", envname, dflt ); /**/
  67.     
  68.     if (fgets( line, BUFSIZ, fe ) == NULL) {
  69.         fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); /* */
  70.         strcpy( *thename, dflt);
  71.     }
  72.     else {
  73.         strcpy( *thename, line);
  74.         fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/
  75.     }
  76. }
  77.  
  78. void sloadenv(void)
  79. {
  80.     fprintf( stderr, "sloadenv\n" );
  81.     if ( (fe = FOPEN( "/usr/lib/uucp/defaults", "r" )) == (FILE *) NULL ) {
  82.         fprintf( stderr, "can't open /usr/lib/uucp/defaults  %d\n", errno );
  83.         exit( -1 );
  84.     }
  85.     fprintf( stderr, "sloadenv - fopened\n" );
  86.     /* get environment var's */
  87.     sgenv( &name, NAME, DNAME );
  88.     sgenv( &mailbox, MAILBOX, DMAILBOX );
  89.     sgenv( &nodename, NODENAME, DNODENAME );
  90.     sgenv( &home, HOME, DHOME );
  91.     sgenv( &domain, DOMAIN, DDOMAIN );
  92.     sgenv( &maildir, MAILDIR, DMAILDIR );
  93.     sgenv( &confdir, CONFDIR, DCONFDIR );
  94.     sgenv( &spooldir, SPOOLDIR, DSPOOLDIR );
  95.     sgenv( &pubdir, PUBDIR, DPUBDIR );
  96.     sgenv( &mailserv, MAILSERVICE, DMAILSERVICE );
  97.     sgenv( &device, DEVICE, DDEVICE );
  98.     sgenv( &speed, SPEED, DSPEED );
  99.     sgenv( &tempdir, TEMPDIR, DTEMPDIR );
  100. }
  101. #endif
  102.  
  103. jmp_buf    dcpexit;
  104.  
  105. char *gets();
  106.  
  107. main(int argc, char **argv) {
  108.     char volname[255];
  109.     int vrefnum;
  110.  
  111.     /* macinit() has to happen before ccomand in THINK_C cos ccomand
  112.      * may change the current folder through redirected input comming from
  113.      * a file that is not in the pcmail application folder. So open
  114.      * resource file first
  115.      */
  116.     macinit();
  117.     
  118.     SysEnvirons(1, &SysEnv);
  119.  
  120. #ifdef THINK_C
  121.     GetVol(volname, &vrefnum);
  122. # ifdef IMMEDEXIT
  123.     console_options.pause_atexit = (short)0;
  124. # endif IMMEDEXIT
  125.     argc = ccommand(&argv);
  126.     SetVol(volname, vrefnum);
  127. #endif THINK_C
  128.  
  129. #ifdef STANDALONE
  130.     fprintf( stderr, "Please enter parameters: " );
  131.     if ( gets( line ) == (char *) NULL )
  132.         exit( -1 );
  133.     getargs( line, flds );
  134.     argv = flds;
  135.     /* mac specific prolog */
  136.     sloadenv();
  137. #else
  138.     /* mac specific prolog */
  139.     loadenv();
  140. #endif
  141.     
  142.     
  143.     curdir = getcwd( NULL, 0 );
  144.  
  145. #ifdef CWDSPOOL
  146.     CHDIR( spooldir );
  147. #endif
  148.  
  149.     /* setup longjmp for error exit's */
  150.     if ( setjmp( dcpexit ) == 0 ) {
  151.  
  152.         MAIN( argc, argv );
  153.  
  154.     }
  155.     
  156.  
  157.     /* mac specific epilog */
  158.     chdir( curdir );
  159.     exit(0);
  160. }
  161.  
  162. /**/
  163. /*
  164.  *  p r i n t m s g
  165.  *
  166.  *  Print error message on standard output if not remote.
  167.  */
  168. /*VARARGS1*/
  169. printmsg(int level, char *fmt, ...)
  170. {
  171.     char    msg[BUFSIZ*2];
  172.     va_list ap;
  173.     if (level == 0) {
  174.         va_start(ap, fmt);
  175.         vsprintf( msg, fmt, ap );
  176.         va_end(ap);
  177.         fputs(msg, stdout);
  178.         fputc('\n', stdout);
  179.     }
  180. }
  181.  
  182.